package com.gk.javaservice.util.rest;


import com.alibaba.fastjson.JSONObject;
import net.sf.json.JSONArray;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.HttpURLConnection;
import java.net.URL;


//文件同步工具类
//@Component
//@EnableScheduling
public class RestUtil {



    public String load(String url,String query) throws Exception
    {
        URL restURL = new URL(url);
        /*
         * 此处的urlConnection对象实际上是根据URL的请求协议(此处是http)生成的URLConnection类 的子类HttpURLConnection
         */
        HttpURLConnection conn = (HttpURLConnection) restURL.openConnection( );
        //请求方式
        conn.setRequestMethod("POST");
        //设置请求属性
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
        conn.setRequestProperty("Charset", "UTF-8");
        conn.setRequestProperty("accept", "*/*");
        //设置是否从httpUrlConnection读入，默认情况下是true; httpUrlConnection.setDoInput(true);
        conn.setDoOutput(true);
        //allowUserInteraction 如果为 true，则在允许用户交互（例如弹出一个验证对话框）的上下文中对此 URL 进行检查。
        conn.setAllowUserInteraction(false);



        PrintStream ps = new PrintStream(conn.getOutputStream());
        ps.print(query);

        ps.close();

        BufferedReader bReader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));

        String line,resultStr="";

        while(null != (line=bReader.readLine()))
        {
            resultStr +=line;
        }
        // // System.out.println("3412412---"+resultStr);
        bReader.close();

        return resultStr;

    }
    public String gatLoad(String url,String query) throws Exception
    {
        URL restURL = new URL(url);
        /*
         * 此处的urlConnection对象实际上是根据URL的请求协议(此处是http)生成的URLConnection类 的子类HttpURLConnection
         */
        HttpURLConnection conn = (HttpURLConnection) restURL.openConnection( );
        //请求方式
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Charsert", "UTF-8"); //设置请求编码
        conn.setRequestProperty("Accept", "*/*");
        //设置是否从httpUrlConnection读入，默认情况下是true; httpUrlConnection.setDoInput(true);
        conn.setDoOutput(true);
        //allowUserInteraction 如果为 true，则在允许用户交互（例如弹出一个验证对话框）的上下文中对此 URL 进行检查。
        conn.setAllowUserInteraction(false);



        PrintStream ps = new PrintStream(conn.getOutputStream());
        ps.print(query);

        ps.close();

        BufferedReader bReader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));

        String line,resultStr="";

        while(null != (line=bReader.readLine()))
        {
            resultStr +=line;
        }
        // // System.out.println("3412412---"+resultStr);
        bReader.close();

        return resultStr;

    }
    //@PostConstruct //这个注解是 程序启动就执行一次 class上要加上 @Component 注解才能起效
    //@Scheduled(cron="*/5 * * * * ?") //定时循环调用 class上要加上 @Component @EnableScheduling 注解才能起效
    private void init(){
        //调用其他服务的API接口，并处理数据
        try {

            RestUtil restUtil = new RestUtil();

//        String resultString = restUtil.load(
//                "http://192.168.10.89:8080/eoffice-restful/resources/sys/oaholiday",
//                "floor=first&year=2017&month=9&isLeader=N");
//        String resultString = restUtil.load(
//                "http://192.168.10.92:818/java/File/hasDirectory",
//                "");
            String resultString = restUtil.load(
                    "http://192.168.10.92:9092/live/startTerminalLiveByIpForSystem",
                    "id=1&ip=192.168.10.110");
            // System.out.println(resultString);

            JSONObject jsonObject = JSONObject.parseObject(resultString);
            // System.out.println(jsonObject.getString("data"));
            // System.out.println("长度");
            // System.out.println(jsonObject.getString("data").length());
            String data=jsonObject.getString("data");

            JSONArray json = JSONArray.fromObject(data);
            // System.out.println(json.size());
            if(json.size()>0){
                for(int i=0;i<json.size();i++){
                    // System.out.println(json.getJSONObject(i)) ;  // 得到 每个对象中的属性值
                    // System.out.println(json.getJSONObject(i).getString("fullPath")) ;
                }
            }

        } catch (Exception e) {

            // TODO: handle exception
            // System.out.print(e.getMessage());

        }

        //定时循环调用  @Scheduled 注解   用于定时循环执行任务

//        @Scheduled(cron="0 */10 * * * ?")　　表示每隔十分钟执行一次
//        每隔5秒执行一次："*/5 * * * * ?"
//
//        每隔1分钟执行一次："0 */1 * * * ?"　　
//
//        每天23点执行一次："0 0 23 * * ?"
//
//        每天凌晨1点执行一次："0 0 1 * * ?"
//
//        每月1号凌晨1点执行一次："0 0 1 1 * ?"
//
//        每月最后一天23点执行一次："0 0 23 L * ?"
//
//        每周星期天凌晨1点实行一次："0 0 1 ? * L"
//
//        在26分、29分、33分执行一次："0 26,29,33 * * * ?"
//
//        每天的0点、13点、18点、21点都执行一次："0 0 0,13,18,21 * * ?"
//
//        表示在每月的1日的凌晨2点调度任务："0 0 2 1 * ? *"
//
//        表示周一到周五每天上午10：15执行作业："0 15 10 ? * MON-FRI"
//
//        表示2002-2006年的每个月的最后一个星期五上午10:15执行："0 15 10 ? 6L 2002-2006

    }

    public static void main(String []args) {

        try {

            RestUtil restUtil = new RestUtil();

//        String resultString = restUtil.load(
//                "http://192.168.10.89:8080/eoffice-restful/resources/sys/oaholiday",
//                "floor=first&year=2017&month=9&isLeader=N");

//        String resultString = restUtil.load(
//                "http://192.168.10.92:9092/File/hasDirectory",
//                "path=D:\\server\\datas" +
//                        "");
            String resultString = restUtil.gatLoad(
                    "http://192.168.10.226:809/web/get-state",

                    "");


            // System.out.println(resultString);
            JSONObject jsonObject = JSONObject.parseObject(resultString);
            // System.out.println(jsonObject.getString("data"));
            // System.out.println("长度");
            // System.out.println(jsonObject.getString("data").length());

            String data=jsonObject.getString("data");
            JSONArray json = JSONArray.fromObject(data );
            // System.out.println(json.size());
            if(json.size()>0){
                for(int i=0;i<json.size();i++){

                    // System.out.println(json.getJSONObject(i)) ;  // 得到 每个对象中的属性值
                    // System.out.println(json.getJSONObject(i).getString("fullPath")) ;
                    // System.out.println(json.getJSONObject(i).getString("name").substring(json.getJSONObject(i).getString("name").lastIndexOf("_")+1)) ;

                }
            }

        } catch (Exception e) {

            // TODO: handle exception

            // System.out.print(e.getMessage());

        }

    }

}
